Behavioural Circuit Design in Lava
نویسنده
چکیده
The Haskell library Lava is great for describing the structure of digital circuits: large, regular circuits can be captured by short, clear descriptions. However, structural circuit description alone – and hence Lava – has a somewhat limited application domain. Many circuits are more appropriately expressed in terms of their desired behaviour. In this article, I present a Haskell library – called Recipe – that sits on top of Lava and provides a set of behavioural programming constructs, including mutable variables, sequential and parallel composition, iteration and choice. Mutable state is provided in the form of rewrite rules – normal Lava functions from state to state – giving the library a powerful blend of the structural and behavioural styles. The approach taken here is also applicable to software-based embedded systems programming. Indeed, I have developed a simple C backend for Lava, and my final example – a program that controls a brick-sorter robot – runs on a Lego Mindstorms RCX microcontoller.
منابع مشابه
Functional Design Using Behavioural and Structural Components
In previous work we have demonstrated how the functional language SAFL can be used as a behavioural hardware description language. Other work (such as μFP and Lava) has demonstrated that functional languages are apposite for structural hardware description. One of the strengths of systems such as VHDL and Verilog is their ability to mix structuraland behavioural-level primitives in a single spe...
متن کاملDesigning FPGA Circuits in Lava
This paper explores the potential of the lazy functional programming language Haskell for the specification, synthesis and verification of digital circuits. Circuits are described using combinators that combine behaviour (allowing circuit simulation, symbolic evaluation and partial evaluation) and layout (allowing the generation of output suitable for entry into VLSI CAD tools). We call the sof...
متن کاملIntroducing Kansas Lava
Kansas Lava is a domain specific language for hardware description. Though there have been a number of previous implementations of Lava, we have found the design space rich, with unexplored choices. We use a direct (Chalmers style) specification of circuits, and make significant use of Haskell overloading of standard classes, leading to concise circuit descriptions. Kansas Lava supports both si...
متن کاملObsidian: GPU Programming in Haskell
Obsidian is a language for data-parallel programming embedded in Haskell. As the Obsidian programs are run, C code is generated. This C code can be compiled for an NVIDIA 8800 series GPU (Graphics Processing Unit), or for other high-end NVIDIA GPUs. The idea is that the style of programming used in Lava for structural hardware design [2] can be applied to data-parallel programming as well. Ther...
متن کاملIBM POWER6 microprocessor physical design and design methodology
model Transistor-level VIM parasitic netlist Schematic, netlist Complete layout IBM J. RES. & DEV. VOL. 51 NO. 6 NOVEMBER 2007 R. BERRIDGE ET AL. 687 technology-specific wire models into the schematic netlist. Among the more accurately placed models in netlist, downstream analysis tools were more effective. Circuit optimization The IBM EinsTuner circuit tuning tool improved timing slack or perf...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2007